package com.hui.service;

import com.github.pagehelper.PageInfo;
import com.hui.dto.MenuInsertDTO;
import com.hui.dto.MenuPageDTO;
import com.hui.dto.MenuUpdateDTO;
import com.hui.entity.Menu;
import com.hui.excel.MenuExcel;
import com.hui.vo.MenuVO;

import java.util.List;

/** @author 周航宇 */
public interface MenuService {
    int insert(MenuInsertDTO dto);
    Menu select(Long id);
    List<MenuVO> list();
    PageInfo<Menu> page(MenuPageDTO dto);
    int update(MenuUpdateDTO dto);
    int delete(Long id);
    int deleteBatch(List<Long> ids);


    /**
     * 导出菜单记录的Excel数据
     *
     * @return 菜单记录的Excel数据列表
     */
    List<MenuExcel> getExcelData();

    /**
     * 根据角色主键查询该角色的全部菜单列表
     *
     * @param roleId 角色主键
     * @return 该角色的全部菜单列表
     */
    List<Menu> listByRoleId(Long roleId);


    /**
     * 根据角色主键修改该角色的菜单列表
     *
     * @param roleId 角色主键
     * @param menuIds 菜单主键列表
     * @return 影响条目数
     */
    int updateByRoleId(Long roleId, List<Long> menuIds);



    /**
     * 根据员工主键查询该员工的全部菜单列表
     *
     * @param empId 员工主键
     * @return 该员工的全部菜单列表
     */
    List<Menu> listByEmpId(Long empId);

}
